package com.eupmt.lab3.persistence.ibatis.dao;

import com.eupmt.lab3.domain.Distribuidor;
import com.eupmt.lab3.domain.Producte;
import com.ibatis.common.resources.Resources;
import com.ibatis.dao.client.DaoManager;
import com.ibatis.dao.client.DaoManagerBuilder;
import java.io.IOException;
import java.io.Reader;
import java.util.List;

/**
 *
 * @author Aarón
 */
public class DistribuidorDaoManager extends DAOManager {

    protected static DistribuidorDaoManager instance = null;
    private DistribuidorDAO distribuidorDAO = null;

    private DistribuidorDaoManager() throws IOException {
        super();
        Reader readerDao = Resources.getResourceAsReader("com/eupmt/lab3/persistence/ibatis/daoConfig.xml");
        DaoManager daoManager = DaoManagerBuilder.buildDaoManager(readerDao);
        this.distribuidorDAO = (DistribuidorDAO) daoManager.getDao(DistribuidorDAO.class);
        //distribuidorDAO = new DistribuidorDAOImpl();
    }

    // Mètodes DistribuidorDAOImpl
    public Distribuidor getDistribuidorById(int idDistribuidor) throws Exception {
        return distribuidorDAO.getDistribuidorById(idDistribuidor);
    }

    public Distribuidor getDistribuidorByCif(String cif) throws Exception {
        return distribuidorDAO.getDistribuidorByCif(cif);
    }

    public List<Distribuidor> getDistribuidorsLikeNom(String nom) throws Exception {
        return distribuidorDAO.getDistribuidorsLikeNom(nom);
    }

    public Distribuidor getDistribuidorByProducte(Producte producte) throws Exception {
        return distribuidorDAO.getDistribuidorByProducte(producte);
    }

    public void insertDistribuidor(Distribuidor distribuidor) throws Exception {
        distribuidorDAO.insertDistribuidor(distribuidor);
    }

    public void updateDistribuidor(Distribuidor distribuidor) throws Exception {
        distribuidorDAO.updateDistribuidor(distribuidor);
    }

    public void deleteDistribuidor(Distribuidor distribuidor) throws Exception {
        distribuidorDAO.deleteDistribuidor(distribuidor);
    }

    public void saveDistribuidor(Distribuidor distribuidor) throws Exception {
        distribuidorDAO.saveDistribuidor(distribuidor);
    }
    
    public static DistribuidorDaoManager getInstance() throws IOException {
        if (instance == null) {
            instance = new DistribuidorDaoManager();
        }
        return instance;
    }
}
